"""
    python 多线程爬虫学习

    线程间的同步：
        当我们运行代码时，不希望代码被中断
"""
from threading import Thread
from threading import Lock

total = 0

# 建立一个通用线程锁，注意使用同一把锁，如果有一个线程获取到了这把锁，另一个线程就必须等待这个锁释放
total_lock = Lock()


def add():
    total_lock.acquire()  # 加锁
    global total
    for i in range(1000):
        total += 1
    total_lock.release()  # 释放锁


def desc():
    total_lock.acquire()  # 加锁
    global total
    for i in range(1000):
        total -= 1
    total_lock.release()  # 释放锁


if __name__ == "__main__":

    # 线程传递参数
    t1 = Thread(target=add)
    t1.start()

    t2 = Thread(target=desc)
    t2.start()

    t1.join()  # t1 运行完成后才会执行之后的逻辑
    t2.join()  # t2 运行完成后才会执行之后的逻辑

    print(total)
